Windows Runtime,或WinRT,是Windows 8中的一种跨平台应用程序架构。WinRT支持的
开发语言包括C++(一般包括C++/CX)和托管语言C#和VB,还有JavaScript。
由于依赖于一些增强
COM组件,
WinRT本质上是一基于COM的API。正因为其COM风格的基础,WinRT可以像COM那样轻松地实现多种语言代码之间的交互联系,不过本质上是非托管的本地API。API的定义存储在以”.winmd为后缀的
元数据文件中,格式编码遵循ECMA 335的定义,和
.Net使用的文件格式一样,不过稍有改进。使用统一的元数据格式相比于
P/Invoke,可以大幅减少WinRT调用.NET程序时的开销,同时拥有更简单的语法。全新的C++/CX(组件扩展)语言,借用了一些
C++/CLI语法,允许授权和使用
WinRT组件,但相比传统的C++下COM编程,对于
程序员来说,有更少的
粘合可见性,同时对于混合类型的限制相比C++/CLI也更少。在新的称为Windows Runtime
C++ Template Library(WRL)的模板类库的帮助下(就好似
ATL之于COM一样),规范的C++代码(遵循COM化规范)也同样可以用在使用了WinRT组件的程序里。不过MSDN建议使用C++/CX而不是WRL。
WinRT组件设计时即着眼于多种语言和API直接的互通性,包括
本地代码、
托管代码还有脚本。比如C++/CX的组件扩展就被建议仅用于存在API壁垒的状况,而不要用于其他目的。
WinRT应用程序可以快速部署并运行在沙盒环境中。对
运行库的测试表明其是构筑在
Win32 API之上的。
.Net使用了类似的实现。
越来越多开发者随着微软Windows8的正式发布投入到了Win8应用程序开发的行列,越来越多的控件商也紧跟潮流开发能创建Metro样式界面的控件。如ComponentOne Studio for WinRT XAML,新增的界面呈现控件专为
数据可视化、布局、输入以及更多用途而设计。源于风行一时的
Silverlight控件设计风格,展现
WinRT平台魅力。